home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / pcboard / cbfree13.zip / CB.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-06-08  |  35KB  |  1,847 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.1O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Boolean  BOOLEAN011
  30.     Boolean  BOOLEAN012
  31.     Boolean  BOOLEAN013
  32.     Boolean  BOOLEAN014
  33.     Boolean  BOOLEAN015
  34.     Boolean  BOOLEAN016
  35.     Boolean  BOOLEAN017
  36.     Boolean  BOOLEAN018
  37.     Boolean  BOOLEAN019
  38.     Boolean  BOOLEAN020
  39.     Boolean  BOOLEAN021
  40.     Boolean  BOOLEAN022
  41.     Boolean  BOOLEAN023
  42.     Boolean  BOOLEAN024
  43.     Boolean  BOOLEAN025
  44.     Boolean  BOOLEAN026
  45.     DWord    DWORD001
  46.     Integer  INTEGER003
  47.     Integer  INTEGER004
  48.     Real     REAL001
  49.     Real     REAL002
  50.     Real     REAL003
  51.     Real     REAL004
  52.     Real     REAL005
  53.     String   STRING004
  54.     String   STRING005
  55.     String   STRING006
  56.     String   STRING007
  57.     String   STRING008
  58.     String   STRING009
  59.     String   STRING010
  60.     String   STRING011
  61.     String   STRING012
  62.     String   STRING013
  63.     String   STRING014
  64.     String   STRING015
  65.     String   STRING016
  66.     String   STRING017
  67.     String   STRING018
  68.     String   STRING019
  69.     String   STRING020
  70.     String   STRING021
  71.     String   STRING022
  72.     String   STRING023
  73.     String   STRING024
  74.     String   STRING025
  75.     String   STRING026
  76.     String   STRING027
  77.     String   STRING028
  78.     String   STRING029
  79.     String   STRING030
  80.     String   STRING031
  81.     String   STRING032
  82.     String   STRING033
  83.     String   STRING034
  84.     String   STRING035
  85.     String   STRING036
  86.     String   STRING037
  87.     Time     TIME001
  88.     Time     TIME002
  89.     Time     TIME003
  90.     Time     TIME004
  91.     Int      INT001
  92.     Int      INT002
  93.     Int      INT003
  94.     Int      INT004
  95.     Int      INT005
  96.     Int      INT006
  97.     Int      INT007
  98.     Int      INT008
  99.     Int      INT009
  100.     Int      INT010
  101.     Int      INT011
  102.     Int      INT012
  103.     Int      INT013
  104.     Int      INT014
  105.     Int      INT015
  106.     Int      INT016
  107.     Int      INT017
  108.     Int      INT018
  109.     Int      INT019
  110.     Int      INT020
  111.     Int      INT021
  112.  
  113. ;------------------------------------------------------------------------------
  114.  
  115.     Log "*** User Entered Callback Program ***", 0
  116.     BOOLEAN003 = 1
  117.     FAppend 7, PPEPath() + "NODE" + String(PcbNode()) + ".LOG", 1, 2
  118.     FPutLn 7, ""
  119.     FPutLn 7, "*********** Starting up CallBack ************"
  120.     Gosub LABEL021
  121.     GetUser
  122.     FPutLn 7, "Callback started for user: ", U_Name()
  123.     FPutLn 7, "                     Date: ", Date()
  124.     FPutLn 7, "                     Time: ", Time()
  125.     FPutLn 7, "    User's Security Level: ", U_Sec
  126.     FPutLn 7, "   User's Expiration Date: ", U_ExpDate
  127.     FPut 7, "       Verification Using: "
  128.     Select Case (STRING022)
  129.         Case "BOTH"
  130.             FPutLn 7, "Username & Password Check"
  131.         Case "USER"
  132.             FPutLn 7, "Username Check"
  133.         Case "PASS"
  134.             FPutLn 7, "Password Check"
  135.     End Select
  136.     Gosub LABEL024
  137.     Gosub LABEL025
  138.     Cls
  139.     DispFile PPEPath() + "WELCOME", 1 + 4
  140.     STRING016 = "          @X0EC@X0F)@X02ontinue Callback process, @X0EE@X0F)@X02xit Callback@X0F"
  141.     STRING015 = "C"
  142.     InputStr STRING016, STRING015, 15, 1, "CE", 2 + 4 + 256 + 8
  143.     If (STRING015 == "E") Then
  144.         FPutLn 7, "**-->> User aborted callback"
  145.         BOOLEAN003 = 1
  146.     Else
  147.         If (BOOLEAN017 && BOOLEAN018) Then
  148.             DispFile PPEPath() + "PFORM1", 1 + 4 + 2
  149.             STRING015 = "1"
  150.             Newline
  151.             STRING016 = "           @X0EPlease make your selection"
  152.             InputStr STRING016, STRING015, 15, 1, "12", 2 + 4 + 256
  153.             If (STRING015 == "1") Then
  154.                 INT020 = 1
  155.                 FPutLn 7, "  Calling format selected: US"
  156.             Else
  157.                 INT020 = 2
  158.                 FPutLn 7, "  Calling format selected: INTL"
  159.             Endif
  160.             DispFile PPEPath() + "PFORM2", 1 + 4 + 2
  161.             STRING015 = "1"
  162.             Newline
  163.             STRING016 = "           @X0EPlease make your selection"
  164.             InputStr STRING016, STRING015, 15, 1, "12", 2 + 4 + 256
  165.             If (STRING015 == 2) Then
  166.                 FPutLn 7, "       International Call: TRUE"
  167.                 BOOLEAN019 = 1
  168.             Else
  169.                 FPutLn 7, "       International Call: FALSE"
  170.             Endif
  171.         Else
  172.             If (BOOLEAN017) Then
  173.                 INT020 = 1
  174.             ElseIf (BOOLEAN018) Then
  175.                 INT020 = 2
  176.             Endif
  177.         Endif
  178.         Gosub LABEL071
  179.         If (Exist(PPEPath() + "BAD-NUM.LST")) Gosub LABEL079
  180.         Gosub LABEL036
  181.         Gosub LABEL039
  182.         BOOLEAN002 = 0
  183.         Gosub LABEL044
  184.         If (BOOLEAN007) Then
  185.             Gosub LABEL063
  186.         Else
  187.             If (BOOLEAN015 && (STRING024 <> "")) Then
  188.                 If (BOOLEAN016) Then
  189.                     FPut 7, "  Caller ID = User Record: "
  190.                     If ((STRING024 == STRING009) || (STRING024 == STRING010)) Then
  191.                         BOOLEAN020 = 1
  192.                         FPutLn 7, "PHONE NUMBER MATCHES USER RECORD"
  193.                         STRING014 = U_Pwd
  194.                         STRING023 = U_Name()
  195.                         BOOLEAN007 = 1
  196.                         BOOLEAN003 = 1
  197.                         Gosub LABEL063
  198.                         Goto LABEL016
  199.                         Goto LABEL001
  200.                     Endif
  201.                     FPutLn 7, "FALSE"
  202.                     FPutLn 7, "**-->> Caller ID did NOT match User Record entries"
  203.                     FPutLn 7, "    User's Security Level: ", U_Sec
  204.                     Log "**-->> Caller ID did NOT match User Record entries", 0
  205.                 Endif
  206.             Endif
  207.             :LABEL001
  208.             Cls
  209.             DispFile PPEPath() + "INST", 1 + 4 + 2
  210.             STRING004 = "P"
  211.             STRING016 = "@X0EP@X0F)@X02roceed with callback, or @X0EE@X0F)@X02xit back to BBS"
  212.             InputStr STRING016, STRING004, 15, 1, "EP", 2 + 4 + 256 + 8
  213.             If (STRING004 <> "P") Then
  214.                 FPutLn 7, "**-->> User aborted callback"
  215.                 BOOLEAN003 = 1
  216.             Else
  217.                 Cls
  218.                 PrintLn "@X0ARemember, type @X0A@X0FATA @X0Athen hit the @X0FENTER @X0Akey after your phone rings@X0F....@X07"
  219.                 PrintLn 
  220.                 Gosub LABEL048
  221.                 If (OnLocal()) Goto LABEL002
  222.                 FClose 7
  223.                 FAppend 7, PPEPath() + "NODE" + String(PcbNode()) + ".LOG", 1, 2
  224.                 Gosub LABEL051
  225.                 Goto LABEL003
  226.                 :LABEL002
  227.                 FPutLn 7, " Local Test-Modem Command: ", STRING018
  228.                 :LABEL003
  229.                 If (BOOLEAN001 || OnLocal()) Then
  230.                     If (OnLocal()) Goto LABEL004
  231.                     FPutLn 7, "            Modem results: We are CONNECTED!!!..."
  232.                     Color 14
  233.                     AnsiPos 2, 18
  234.                     SPrint "Waiting for line to settle down..."
  235.                     AnsiPos 2, 18
  236.                     Color 7
  237.                     Delay 54
  238.                     CdChkOn
  239.                     KbdChkOn
  240.                     Goto LABEL005
  241.                     :LABEL004
  242.                     Newline
  243.                     PrintLn "   @X0F*** @X0CThis is a Local Logon Callback @X0F- @X0ENo Phone call made @X0F***@X07"
  244.                     Newline
  245.                     Delay 36
  246.                     :LABEL005
  247.                     Gosub LABEL053
  248.                     Gosub LABEL063
  249.                 Else
  250.                     FPutLn 7, "**-->> Too many tries exceeded to make callback"
  251.                     U_Sec = INT006
  252.                     FPutLn 7, "    Security Level set to: " + String(INT006)
  253.                     PutUser
  254.                     Cls
  255.                 Endif
  256.                 Goto LABEL016
  257.                 :LABEL006
  258.                 Select Case (INT020)
  259.                     Case 1
  260.                         STRING009 = Mid(STRING009, 1, 3) + "-" + Mid(STRING009, 4, 3) + "-" + Mid(STRING009, 7, 4)
  261.                     Case 2
  262.                         STRING004 = "*" + Mid(STRING009, 1, Len(STRING032)) + "-" + Mid(STRING009, Len(STRING032) + 1, Len(STRING033)) + "-" + Mid(STRING009, Len(STRING032) + Len(STRING033) + 1, Len(STRING009) - Len(STRING032) + Len(STRING033))
  263.                         STRING004 = Trim(STRING004, " ")
  264.                         STRING009 = STRING004 + Space(24 - Len(STRING004))
  265.                 End Select
  266.                 STRING004 = STRING009 + " " + U_Name() + " " + String(Time()) + " " + String(Date()) + " " + "H/V from User Record"
  267.                 FPutLn 1, STRING004
  268.                 Return
  269.                 :LABEL007
  270.                 Select Case (INT020)
  271.                     Case 1
  272.                         STRING010 = Mid(STRING010, 1, 3) + "-" + Mid(STRING010, 4, 3) + "-" + Mid(STRING010, 7, 4)
  273.                     Case 2
  274.                         STRING004 = "*" + Mid(STRING010, 1, Len(STRING032)) + "-" + Mid(STRING010, Len(STRING032) + 1, Len(STRING033)) + "-" + Mid(STRING010, Len(STRING032) + Len(STRING033) + 1, Len(STRING010) - Len(STRING032) + Len(STRING033))
  275.                         STRING004 = Trim(STRING004, " ")
  276.                         STRING010 = STRING004 + Space(24 - Len(STRING004))
  277.                 End Select
  278.                 STRING004 = STRING010 + " " + U_Name() + " " + String(Time()) + " " + String(Date()) + " " + "Data from User Record"
  279.                 FPutLn 1, STRING004
  280.                 Return
  281.                 :LABEL008
  282.                 STRING004 = StripStr(STRING004, "+")
  283.                 STRING004 = StripStr(STRING004, "-")
  284.                 STRING004 = StripStr(STRING004, ")")
  285.                 STRING004 = StripStr(STRING004, "(")
  286.                 STRING004 = StripStr(STRING004, " ")
  287.                 Return
  288.                 :LABEL009
  289.                 Select Case (INT020)
  290.                     Case 1
  291.                         FOpen 1, PPEPath() + "AREACODE.DAT", 0, 0
  292.                     Case 2
  293.                         FOpen 1, PPEPath() + "CNTYCODE.DAT", 0, 0
  294.                 End Select
  295.                 :LABEL010
  296.                 If (BOOLEAN002) Goto LABEL011
  297.                 FGet 1, STRING004
  298.                 If (Ferr(1)) Goto LABEL011
  299.                 Select Case (INT020)
  300.                     Case 1
  301.                         If (Mid(STRING004, 1, 3) == STRING011) BOOLEAN002 = 1
  302.                         If (Mid(STRING004, 1, 3) > STRING011) Goto LABEL011
  303.                     Case 2
  304.                         If (Mid(STRING004, 1, 3) == STRING032) BOOLEAN002 = 1
  305.                 End Select
  306.                 Goto LABEL010
  307.                 :LABEL011
  308.                 FClose 1
  309.                 Return
  310.                 :LABEL012
  311.                 STRING004 = PPEPath() + STRING011 + "XCHNG.DAT"
  312.                 If (Exist(STRING004)) Goto LABEL013
  313.                 FPutLn 7, "        No Exchange File : ", STRING004
  314.                 Return
  315.                 :LABEL013
  316.                 FPutLn 7, "  Searching Exchange File: ", STRING011 + "XCHNG.DAT"
  317.                 FOpen 1, STRING004, 0, 0
  318.                 :LABEL014
  319.                 If (BOOLEAN002) Goto LABEL015
  320.                 FGet 1, STRING004
  321.                 If (Ferr(1)) Goto LABEL015
  322.                 If (Mid(STRING004, 1, 3) == STRING012) BOOLEAN002 = 1
  323.                 Goto LABEL014
  324.                 :LABEL015
  325.                 FClose 1
  326.                 Return
  327.             Endif
  328.         Endif
  329.     Endif
  330.     :LABEL016
  331.     If (BOOLEAN003) Goto LABEL017
  332.     If (OnLocal()) Then
  333.         PrintLn "Local Testing - User stays online"
  334.         FPutLn 7, "Local Testing - User stays online"
  335.         Gosub LABEL019
  336.     Else
  337.         Gosub LABEL019
  338.         Hangup
  339.     Endif
  340.     Goto LABEL018
  341.     :LABEL017
  342.     Gosub LABEL019
  343.     :LABEL018
  344.     Log "*** User Exited Callback Program ***", 0
  345.     DefColor
  346.     If (!BOOLEAN001 && !OnLocal()) Then
  347.         CdChkOn
  348.         KbdChkOn
  349.     Endif
  350.     End
  351.     :LABEL019
  352.     FPutLn 7, "   User's Expiration Date: ", U_ExpDate
  353.     FPutLn 7, "@@@@@@@@@@@   Ending  CallBack   @@@@@@@@@@@@"
  354.     FClose 7
  355.     Return
  356.     :LABEL020
  357.     If (!Exist(PPEPath() + "TRASHCAN.DAT")) Return
  358.     FOpen 1, PPEPath() + "TRASHCAN.DAT", 0, 0
  359.     While (1) Do
  360.         FGet 1, STRING004
  361.         If (Ferr(1)) Break
  362.         If (Left(STRING004, 1) == "'") Continue
  363.         If ((Left(STRING004, 1) == "*") && (INT020 == 1)) Continue
  364.         Select Case (INT020)
  365.             Case 1
  366.                 STRING004 = Mid(STRING004, 1, 25)
  367.             Case 2
  368.                 STRING004 = Mid(STRING004, 2, 24)
  369.         End Select
  370.         If (INT009 == 1) Then
  371.             If (Mid(STRING004, 1, 3) == STRING011) Then
  372.                 PrintLn 
  373.                 PrintLn "     @X0F*** @X0CThe Area Code " + STRING011 + " is @X0Fnot allowed @X0Cfor callback@X07"
  374.                 Newline
  375.                 FPutLn 7, "**-->> Area Code matches entry in Trashcan"
  376.                 Delay 54
  377.                 Goto LABEL016
  378.             Endif
  379.             Continue
  380.         Endif
  381.         If (INT009 == 2) Then
  382.             If (Mid(STRING004, 5, 3) == STRING012) Then
  383.                 PrintLn 
  384.                 PrintLn "     @X0F*** @X0CThe exchange " + STRING012 + " is @X0Fnot allowed @X0Cfor callback@X07"
  385.                 Newline
  386.                 FPutLn 7, "**-->> Exchange matches entry in Trashcan"
  387.                 Delay 54
  388.                 Goto LABEL016
  389.             Endif
  390.             Continue
  391.         Endif
  392.         If (INT009 == 3) Then
  393.             If (Mid(STRING004, 9, 4) == STRING013) Then
  394.                 PrintLn 
  395.                 PrintLn "     @X0F*** @X0CThe last 4 number " + STRING013 + " are @X0Fnot allowed @X0Cfor callback@X07"
  396.                 Newline
  397.                 FPutLn 7, "**-->> Last 4 Numbers matches entry in Trashcan"
  398.                 Delay 54
  399.                 Goto LABEL016
  400.             Endif
  401.             Continue
  402.         Endif
  403.         If (INT009 == 4) Then
  404.             If (RTrim(Mid(STRING004, 1, 3), " ") == STRING032) Then
  405.                 PrintLn 
  406.                 PrintLn "     @X0F*** @X0CThe country code " + STRING032 + " is @X0Fnot allowed @X0Cfor callback@X07"
  407.                 Newline
  408.                 FPutLn 7, "**-->> Exchange matches entry in Trashcan"
  409.                 Delay 54
  410.                 Goto LABEL016
  411.             Endif
  412.             Continue
  413.         Endif
  414.         If (INT009 == 5) Then
  415.             If (RTrim(Mid(STRING004, 5, 4), " ") == STRING033) Then
  416.                 PrintLn 
  417.                 PrintLn "     @X0F*** @X0CThe city code " + STRING033 + " is @X0Fnot allowed @X0Cfor callback@X07"
  418.                 Newline
  419.                 FPutLn 7, "**-->> Exchange matches entry in Trashcan"
  420.                 Delay 54
  421.                 Goto LABEL016
  422.             Endif
  423.             Continue
  424.         Endif
  425.         If (INT009 == 6) Then
  426.             If (RTrim(Mid(STRING004, 10, 8), " ") == STRING034) Then
  427.                 PrintLn 
  428.                 PrintLn "     @X0F*** @X0CThe last numbers " + STRING034 + " are @X0Fnot allowed @X0Cfor callback@X07"
  429.                 Newline
  430.                 FPutLn 7, "**-->> Exchange matches entry in Trashcan"
  431.                 Delay 54
  432.                 Goto LABEL016
  433.             Endif
  434.         Endif
  435.     EndWhile
  436.     FClose 1
  437.     Return
  438.     :LABEL021
  439.     Newline
  440.     PrintLn "@X03Reading configuration.....@X07"
  441.     If (Exist(PPEPath() + "CB" + String(PcbNode()) + ".CFG")) Then
  442.         FPutLn 7, " Using configuration file: ", "CB" + String(PcbNode()) + ".CFG"
  443.         FOpen 1, PPEPath() + "CB" + String(PcbNode()) + ".CFG", 0, 0
  444.     Else
  445.         FOpen 1, PPEPath() + "CB.CFG", 0, 0
  446.         If (Ferr(1)) Then
  447.             Newline
  448.             PrintLn "Configuration file (CB.CFG) NOT FOUND!!....Program Aborting"
  449.             Newline
  450.             FPutLn 7, "**-->> Configuration File Not Found!!!! - CB.CFG - Program Aborted"
  451.             Wait
  452.             Goto LABEL016
  453.         Endif
  454.         FPutLn 7, " Using configuration file: CB.CFG"
  455.     Endif
  456.     INT015 = 1
  457.     While (1) Do
  458.         If (INT015 > 26) Break
  459.         FGet 1, STRING004
  460.         STRING004 = Trim(STRING004, " ")
  461.         If (Ferr(1) && (INT015 < 26)) Then
  462.             FPutLn 7, "##### CONFIGURATION FILE DOES NOT CONTAIN 26 ENTRIES #####"
  463.             Goto LABEL016
  464.         Endif
  465.         If ((Left(STRING004, 1) == "#") || (Left(STRING004, 1) == "'")) Continue
  466.         Select Case (INT015)
  467.             Case 1
  468.                 INT007 = ToInt(STRING004)
  469.             Case 2
  470.                 Tokenize STRING004
  471.                 STRING022 = Upper(GetToken())
  472.                 INT008 = ToInt(GetToken())
  473.             Case 3
  474.                 REAL001 = ToReal(STRING004)
  475.             Case 4
  476.                 STRING007 = Upper(STRING004)
  477.             Case 5
  478.                 INT012 = ToInt(STRING004)
  479.             Case 6
  480.                 INT013 = ToInt(STRING004)
  481.             Case 7
  482.                 STRING019 = STRING004
  483.             Case 8
  484.                 STRING020 = STRING004
  485.             Case 9
  486.                 Tokenize STRING004
  487.                 TIME001 = GetToken()
  488.                 TIME002 = GetToken()
  489.             Case 10
  490.                 Tokenize STRING004
  491.                 If (InStr(STRING004, "DISABLED")) Goto LABEL022
  492.                 TIME003 = GetToken()
  493.                 TIME004 = GetToken()
  494.                 Goto LABEL023
  495.                 :LABEL022
  496.                 BOOLEAN025 = 1
  497.                 :LABEL023
  498.             Case 11
  499.                 If (STRING004 <> "") Then
  500.                     Tokenize STRING004
  501.                     DWORD001 = ToInteger(GetToken())
  502.                     STRING021 = GetToken()
  503.                 Endif
  504.             Case 12
  505.                 If (Upper(STRING004) == "TRUE") BOOLEAN011 = 1
  506.             Case 13
  507.                 If (Upper(STRING004) == "TRUE") BOOLEAN012 = 1
  508.             Case 14
  509.                 If (Upper(STRING004) == "TRUE") BOOLEAN013 = 1
  510.             Case 15
  511.                 If (Upper(STRING004) == "TRUE") BOOLEAN014 = 1
  512.             Case 16
  513.                 REAL002 = ToReal(STRING004)
  514.             Case 17
  515.                 REAL003 = ToReal(STRING004)
  516.             Case 18
  517.                 REAL004 = ToReal(STRING004)
  518.             Case 19
  519.                 STRING004 = ReplaceStr(STRING004, " ", "_")
  520.                 Tokenize STRING004
  521.                 STRING005 = Upper(GetToken())
  522.                 Select Case (STRING005)
  523.                     Case "TRUE"
  524.                         BOOLEAN015 = 1
  525.                         STRING005 = Upper(GetToken())
  526.                         If (STRING005 == "TRUE") BOOLEAN016 = 1
  527.                         STRING035 = Upper(GetToken())
  528.                         STRING035 = ReplaceStr(STRING035, "_", " ")
  529.                         STRING036 = GetToken()
  530.                         STRING005 = Upper(GetToken())
  531.                         If (STRING005 == "H") BOOLEAN023 = 1
  532.                         STRING005 = Upper(GetToken())
  533.                     Case "TRUE"
  534.                         BOOLEAN026 = 1
  535.                         STRING037 = Upper(GetToken())
  536.                 End Select
  537.             Case 20
  538.                 STRING025 = STRING004
  539.             Case 21
  540.                 Tokenize STRING004
  541.                 STRING026 = GetToken()
  542.                 STRING027 = GetToken()
  543.                 STRING028 = Upper(GetToken())
  544.             Case 22
  545.                 Tokenize STRING004
  546.                 STRING029 = GetToken()
  547.                 STRING030 = GetToken()
  548.             Case 23
  549.                 STRING031 = Upper(STRING004)
  550.             Case 24
  551.                 Tokenize STRING004
  552.                 INT001 = ToInt(GetToken())
  553.                 INT002 = ToInt(GetToken())
  554.             Case 25
  555.                 Tokenize STRING004
  556.                 STRING005 = Upper(GetToken())
  557.                 If ((STRING005 == "US") || (STRING005 == "BOTH")) BOOLEAN017 = 1
  558.                 If ((STRING005 == "INTL") || (STRING005 == "BOTH")) Then
  559.                     BOOLEAN018 = 1
  560.                     STRING005 = Upper(GetToken())
  561.                     If (STRING005 == "TRUE") BOOLEAN022 = 1
  562.                 Endif
  563.             Case 26
  564.                 If (Upper(STRING004) <> "FALSE") BOOLEAN021 = 1
  565.         End Select
  566.         Inc INT015
  567.     EndWhile
  568.     FClose 1
  569.     Return
  570.     :LABEL024
  571.     If (U_Sec > INT007) Then
  572.         PrintLn 
  573.         PrintLn "@X4FSecurity Level Too High@X0F....@X0EReturning to the BBS"
  574.         Newline
  575.         FPutLn 7, "**-->> Security Level too high = ", U_Sec
  576.         Delay 36
  577.         Goto LABEL016
  578.     Endif
  579.     Return
  580.     :LABEL025
  581.     STRING005 = PPEPath() + "BAD-NAME.LST"
  582.     If (Exist(STRING005)) Then
  583.         FPutLn 7, "Checking Username against: BAD-NAME.LST"
  584.         FOpen 1, STRING005, 0, 0
  585.         While (1) Do
  586.             FGet 1, STRING004
  587.             If (Ferr(1)) Break
  588.             If (Left(STRING004, 1) == "'") Continue
  589.             If (Upper(Trim(U_Name(), " ")) == Upper(Trim(STRING004, " "))) Then
  590.                 DispFile PPEPath() + "BADNAM", 1 + 4 + 2
  591.                 FPutLn 7, "**-->>    Matched name in: BAD-NAME.LST...Exit Callback"
  592.                 Delay 36
  593.                 Goto LABEL016
  594.             Endif
  595.         EndWhile
  596.         FPutLn 7, "        No match found in: BAD-NAME.LST"
  597.         FClose 1
  598.     Endif
  599.     Return
  600.     :LABEL026
  601.     Newlines 2
  602.     PrintLn "      @X0FYou have the following phone numbers in your user record"
  603.     Newline
  604.     PrintLn "      @X0ABusiness/Data Phone Number@X0F: [@X0CD@X0F] - @X02", U_BDPhone
  605.     PrintLn "      @X0AHome/Voice Phone Number   @X0F: [@X0CH@X0F] - @X02", U_HVPhone
  606.     If (BOOLEAN011) PrintLn "      @X0AUse Other Phone Number    @X0F: [@X0CO@X0F]@X03ther"
  607.     Newline
  608.     If (BOOLEAN011) Then
  609.         STRING016 = "  Which number do you wish to use for your callback number (D/H/O)"
  610.         STRING015 = "D"
  611.         InputStr STRING016, STRING015, 14, 1, "DHO", 2 + 4 + 256 + 8
  612.     Else
  613.         STRING016 = "  Which number do you wish to use for your callback number (D/H)"
  614.         STRING015 = "D"
  615.         InputStr STRING016, STRING015, 14, 1, "DH", 2 + 4 + 256 + 8
  616.     Endif
  617.     Gosub LABEL081
  618.     If (STRING015 <> "O") Then
  619.         BOOLEAN024 = 0
  620.         If (STRING015 == "D") STRING008 = STRING010
  621.         If (STRING015 == "H") STRING008 = STRING009
  622.         Select Case (INT020)
  623.             Case 1
  624.                 INT018 = INT001
  625.             Case 2
  626.                 INT018 = INT002
  627.         End Select
  628.         If (Len(STRING008) <> INT018) Then
  629.             Newline
  630.             PrintLn "  @X0FImproper phone number in user file - @X0CSysOp Notified@X0F!!@X07"
  631.             If (STRING015 == "D") FPutLn 7, "**-->> (D) Improper phone number in user file: ", U_BDPhone
  632.             If (STRING015 == "H") FPutLn 7, "**-->> (H) Improper phone number in user file: ", U_HVPhone
  633.             BOOLEAN024 = 1
  634.             STRING008 = ""
  635.             Delay 54
  636.         Else
  637.             BOOLEAN006 = 1
  638.             If (STRING015 == "D") FPutLn 7, "        Phone number used: Data Number from User Record"
  639.             If (STRING015 == "H") FPutLn 7, "        Phone number used: Voice Number from User Record"
  640.         Endif
  641.         If (BOOLEAN006 && (INT020 == 1)) Then
  642.             STRING011 = Mid(STRING008, 1, 3)
  643.             STRING012 = Mid(STRING008, 4, 3)
  644.             STRING013 = Mid(STRING008, 7, 4)
  645.             STRING006 = STRING011 + "-" + STRING012 + "-" + STRING013
  646.         ElseIf (BOOLEAN006 && (INT020 == 2)) Then
  647.             STRING032 = Trim(Mid(STRING008, 1, 3), " ")
  648.             STRING033 = Trim(Mid(STRING008, 4, 4), " ")
  649.             STRING034 = Trim(Mid(STRING008, 8, 8), " ")
  650.             STRING006 = STRING032 + "-" + STRING033 + "-" + STRING034
  651.         Endif
  652.     Else
  653.         FPutLn 7, "        Phone number used: User Entered 'OTHER' Phone Number"
  654.     Endif
  655.     Return
  656.     :LABEL027
  657.     If (!BOOLEAN006 && (INT020 == 1)) Then
  658.         STRING011 = ""
  659.         STRING012 = ""
  660.         STRING013 = ""
  661.     ElseIf (!BOOLEAN006 && (INT020 == 2)) Then
  662.         STRING032 = ""
  663.         STRING033 = ""
  664.         STRING034 = ""
  665.     Endif
  666.     Select Case (INT020)
  667.         Case 1
  668.             STRING016 = "   @X0APlease enter your Area Code: @X0F"
  669.             If (STRING011 == "") Newline
  670.             STRING015 = STRING011
  671.             INT018 = 3
  672.             INT019 = 3
  673.         Case 2
  674.             STRING016 = "@X0APlease enter your Country Code: @X0F"
  675.             If (STRING032 == "") Newline
  676.             STRING015 = STRING032
  677.             INT018 = 1
  678.             INT019 = 3
  679.     End Select
  680.     While (Len(STRING015) < INT018) Do
  681.         STRING015 = ""
  682.         InputStr STRING016, STRING015, 15, INT019, Mask_Num(), 2 + 4 + 256
  683.     EndWhile
  684.     Select Case (INT020)
  685.         Case 1
  686.             STRING011 = STRING015
  687.             FPutLn 7, "                Area Code: ", STRING011
  688.             INT009 = 1
  689.         Case 2
  690.             STRING032 = STRING015
  691.             FPutLn 7, "             Country Code: ", STRING032
  692.             INT009 = 4
  693.     End Select
  694.     Gosub LABEL020
  695.     If (BOOLEAN012) Then
  696.         Gosub LABEL009
  697.     Else
  698.         BOOLEAN002 = 1
  699.     Endif
  700.     If (BOOLEAN002) Goto LABEL028
  701.     PrintLn 
  702.     Select Case (INT020)
  703.         Case 1
  704.             PrintLn "@X0CArea Code @X0E" + STRING011 + "@X0C Is Not Allowed For Call Back@X07"
  705.             FPutLn 7, "   Area Code not in .DAT = ", STRING011
  706.             Log "** Area Code Not allowed in Callback **", 0
  707.         Case 2
  708.             PrintLn "@X0CCountry Code @X0E" + STRING032 + "@X0C Is Not Allowed For Call Back@X07"
  709.             FPutLn 7, "Country Code not in .DAT = ", STRING032
  710.             Log "** Country Code Not allowed in Callback **", 0
  711.     End Select
  712.     Newline
  713.     PrintLn "@X0BInform the sysop if you believe there is a problem, Thanks.@X07"
  714.     Delay 36
  715.     Goto LABEL016
  716.     Goto LABEL029
  717.     :LABEL028
  718.     BOOLEAN002 = 0
  719.     :LABEL029
  720.     Select Case (INT020)
  721.         Case 1
  722.             STRING016 = "           @X0AEnter your Exchange: @X0F"
  723.             STRING015 = STRING012
  724.             INT018 = 3
  725.             INT019 = 3
  726.         Case 2
  727.             STRING016 = "          @X0AEnter your City Code: @X0F"
  728.             STRING015 = STRING033
  729.             INT018 = 1
  730.             INT019 = 4
  731.     End Select
  732.     While (Len(STRING015) < INT018) Do
  733.         STRING015 = ""
  734.         InputStr STRING016, STRING015, 15, INT019, Mask_Num(), 2 + 4 + 256
  735.     EndWhile
  736.     Select Case (INT020)
  737.         Case 1
  738.             STRING012 = STRING015
  739.             FPutLn 7, "                 Exchange: ", STRING012
  740.             INT009 = 2
  741.         Case 2
  742.             STRING033 = STRING015
  743.             FPutLn 7, "                City Code: ", STRING033
  744.             INT009 = 5
  745.     End Select
  746.     Gosub LABEL020
  747.     If ((INT020 == 1) && !BOOLEAN019) Then
  748.         If (InStr(STRING019, STRING011) == 0) Then
  749.             If (BOOLEAN013) Gosub LABEL012
  750.             Goto LABEL030
  751.         Endif
  752.         BOOLEAN002 = 1
  753.         :LABEL030
  754.         If (BOOLEAN013) Then
  755.             If (BOOLEAN002) Then
  756.                 BOOLEAN003 = 1
  757.                 STRING004 = "TRUE"
  758.                 Goto LABEL031
  759.             Endif
  760.             BOOLEAN003 = 0
  761.             STRING004 = "FALSE"
  762.             :LABEL031
  763.             FPutLn 7, "               Local Call: ", STRING004
  764.         Endif
  765.     Endif
  766.     Select Case (INT020)
  767.         Case 1
  768.             STRING016 = "       @X0AEnter the last 4 digits: @X0F"
  769.             STRING015 = STRING013
  770.             INT018 = 4
  771.             INT019 = 4
  772.         Case 2
  773.             STRING016 = "       @X0AEnter remaining numbers: @X0F"
  774.             STRING015 = STRING034
  775.             INT018 = 1
  776.             INT019 = 8
  777.     End Select
  778.     While (Len(STRING015) < INT018) Do
  779.         STRING015 = ""
  780.         InputStr STRING016, STRING015, 15, INT019, Mask_Num(), 2 + 4 + 256
  781.     EndWhile
  782.     Select Case (INT020)
  783.         Case 1
  784.             STRING013 = STRING015
  785.             FPutLn 7, "           Last 4 Numbers: ", STRING013
  786.             INT009 = 3
  787.         Case 2
  788.             STRING034 = STRING015
  789.             FPutLn 7, "             Last Numbers: ", STRING034
  790.             INT009 = 6
  791.     End Select
  792.     Gosub LABEL020
  793.     If ((INT020 == 1) && !BOOLEAN019) Then
  794.         If (BOOLEAN013) Goto LABEL032
  795.         If (STRING011 <> STRING019) Then
  796.             Gosub LABEL035
  797.         Else
  798.             BOOLEAN003 = 1
  799.             FPutLn 7, "               Local Call: ALWAYS TRUE AREACODE"
  800.         Endif
  801.         :LABEL032
  802.     ElseIf ((INT020 == 1) && BOOLEAN019) Then
  803.         BOOLEAN003 = 0
  804.     ElseIf (INT020 == 2) Then
  805.         If (BOOLEAN019) Goto LABEL033
  806.         Gosub LABEL035
  807.         If (BOOLEAN022) Then
  808.             PrintLn "@X0ESome countries require a '0' to preceed the phone number to"
  809.             PrintLn "make a phone call within the same country.  With this in mind..."
  810.             STRING016 = "@X0ADoes this call to you, require a '0' to preceed the number@X07"
  811.             STRING005 = NoChar()
  812.             InputYN STRING016, STRING005, 14
  813.             If (STRING005 == YesChar()) STRING033 = "0" + STRING033
  814.             Newline
  815.         Endif
  816.         Goto LABEL034
  817.         :LABEL033
  818.         BOOLEAN003 = 0
  819.     Endif
  820.     :LABEL034
  821.     Select Case (INT020)
  822.         Case 1
  823.             STRING008 = STRING011 + STRING012 + STRING013
  824.             STRING006 = STRING011 + "-" + STRING012 + "-" + STRING013
  825.         Case 2
  826.             STRING008 = STRING032 + STRING033 + STRING034
  827.             STRING006 = STRING032 + "-" + STRING033 + "-" + STRING034
  828.     End Select
  829.     FPutLn 7, "     Phone Number Entered: ", STRING006
  830.     Return
  831.     :LABEL035
  832.     Newline
  833.     STRING016 = "  @X0C" + STRING006 + "@X0F - @X0EIs this a Local Phone Call @X0F(@X02Y/N@X0F)"
  834.     STRING005 = YesChar()
  835.     InputYN STRING016, STRING005, 14
  836.     If (STRING005 == YesChar()) Then
  837.         BOOLEAN003 = 1
  838.         FPutLn 7, "               Local Call: TRUE - CHOSEN BY USER"
  839.     Else
  840.         BOOLEAN003 = 0
  841.         FPutLn 7, "               Local Call: FALSE - CHOSEN BY USER"
  842.     Endif
  843.     Newline
  844.     Return
  845.     :LABEL036
  846.     BOOLEAN005 = 0
  847.     If (BOOLEAN003) Then
  848.         If (TIME002 < TIME001) Then
  849.             If ((Time() < TIME001) && (Time() > TIME002)) BOOLEAN005 = 1
  850.             Goto LABEL037
  851.         Endif
  852.         If (TIME002 > TIME001) Then
  853.             If ((Time() < TIME001) || (Time() > TIME002)) BOOLEAN005 = 1
  854.         Endif
  855.         :LABEL037
  856.         FPutLn 7, " Local Allowed Start Time: ", TIME001
  857.         FPutLn 7, "   Local Allowed End Time: ", TIME002
  858.         FPutLn 7, "          Current time is: ", Time()
  859.     Endif
  860.     If (!BOOLEAN003 && !BOOLEAN025) Then
  861.         If (TIME004 < TIME003) Then
  862.             If ((Time() < TIME003) && (Time() > TIME004)) BOOLEAN005 = 1
  863.         ElseIf (TIME004 > TIME003) Then
  864.             If ((Time() < TIME003) || (Time() > TIME004)) BOOLEAN005 = 1
  865.         Endif
  866.         FPutLn 7, "    LD Allowed Start Time: ", TIME003
  867.         FPutLn 7, "      LD Allowed End Time: ", TIME004
  868.         FPutLn 7, "          Current time is: ", Time()
  869.     Else
  870.         If (!BOOLEAN003 && BOOLEAN025) Then
  871.             FPutLn 7, "  Long Distance Callback Blocked - ** No Callback performed **"
  872.             DispFile PPEPath() + "ldno", 4 + 1 + 2
  873.             BOOLEAN003 = 1
  874.             Goto LABEL016
  875.         Endif
  876.     Endif
  877.     If (BOOLEAN005) Then
  878.         FPutLn 7, "    Callback within hours: FALSE - ** No Callback performed **"
  879.         If (BOOLEAN003) Then
  880.             DispFile PPEPath() + "lcno", 4 + 1 + 2
  881.             Goto LABEL038
  882.         Endif
  883.         DispFile PPEPath() + "ldno", 4 + 1 + 2
  884.         :LABEL038
  885.         BOOLEAN003 = 1
  886.         Goto LABEL016
  887.     Endif
  888.     FPutLn 7, "    Callback within hours: TRUE"
  889.     Return
  890.     :LABEL039
  891.     BOOLEAN002 = 0
  892.     If (BOOLEAN003) Then
  893.         If (Exist(PPEPath() + "LC-SL.CFG")) Goto LABEL040
  894.         Newlines 3
  895.         PrintLn "Local Security File MISSING - Inform SysOp Immediately!!"
  896.         FPutLn 7, "**-->> Local Security (LC-SL.CFG) File MISSING!!"
  897.         Delay 54
  898.         Goto LABEL016
  899.         :LABEL040
  900.         FOpen 1, PPEPath() + "LC-SL.CFG", 0, 0
  901.     Else
  902.         If (Exist(PPEPath() + "LD-SL.CFG")) Goto LABEL041
  903.         Newlines 3
  904.         PrintLn "Long Distance Security File MISSING - Inform SysOp Immediately!!"
  905.         FPutLn 7, "**-->> Long Distance Security (LD-SL.CFG) File MISSING!!"
  906.         Delay 54
  907.         Goto LABEL016
  908.         :LABEL041
  909.         FOpen 1, PPEPath() + "LD-SL.CFG", 0, 0
  910.     Endif
  911.     While (1) Do
  912.         FGet 1, STRING004
  913.         If (Ferr(1)) Then
  914.             If (BOOLEAN002) Goto LABEL042
  915.             Log "*** Cannot find matching security level in ??-SL.CFG", 0
  916.             FPutLn 7, "*** Cannot find matching security level in ??-SL.CFG"
  917.             Newlines 3
  918.             PrintLn "@X0CYour security level was not found by program - @X0FInform SysOp ASAP!!!@X07"
  919.             Newlines 2
  920.             Wait
  921.             BOOLEAN003 = 1
  922.             Goto LABEL016
  923.         Endif
  924.         :LABEL042
  925.         If ((Left(STRING004, 1) == "#") || (Left(STRING004, 1) == "'")) Continue
  926.         If (U_Sec == ToInt(Mid(STRING004, 1, InStr(STRING004, ";") - 1))) Then
  927.             BOOLEAN002 = 1
  928.             Tokenize STRING004
  929.             STRING015 = GetToken()
  930.             INT005 = ToInt(GetToken())
  931.             INT006 = ToInt(GetToken())
  932.             INT004 = ToInt(GetToken())
  933.             INT017 = ToInt(GetToken())
  934.             INT003 = ToInt(GetToken())
  935.             FPutLn 7, "       Verified Sec Level: ", INT005
  936.             FPutLn 7, "        Failure Sec Level: ", INT006
  937.             FPutLn 7, "        Expired Sec Level: ", INT004
  938.             FPutLn 7, "          Time Adjustment: ", INT017
  939.             If (INT003 <> 0) Then
  940.                 FPut 7, "   Days till Expired Date: ", INT003, " = ", ToDate(Date() + INT003)
  941.                 Goto LABEL043
  942.             Endif
  943.             FPut 7, "   Days till Expired Date: ", INT003, " = 00/00/00"
  944.             :LABEL043
  945.             FPutLn 7, " - (If Callback is successful)"
  946.             Break
  947.             Continue
  948.         Endif
  949.         Continue
  950.     EndWhile
  951.     FClose 1
  952.     Return
  953.     :LABEL044
  954.     BOOLEAN007 = 0
  955.     Print "@X02Checking entries in verified log for duplicates: @X0F"
  956.     INT015 = 0
  957.     Print "    "
  958.     If (Exist(PPEPath() + "VERIFIED.LOG")) Goto LABEL045
  959.     FPutLn 7, "**-->> VERIFIED.LOG is not found"
  960.     Return
  961.     :LABEL045
  962.     FOpen 1, PPEPath() + "VERIFIED.LOG", 0, 0
  963.     While (1) Do
  964.         FGet 1, STRING004
  965.         If (Ferr(1)) Break
  966.         Inc INT015
  967.         If ((Left(STRING004, 1) == "*") && (INT020 == 1)) Continue
  968.         If (!INT015 % 100) Print Chr(8) , Chr(8) , Chr(8) , Chr(8) , Space(4 - Len(INT015)) , INT015
  969.         Select Case (INT020)
  970.             Case 1
  971.                 STRING005 = Mid(STRING004, 1, 12)
  972.             Case 2
  973.                 STRING005 = Mid(STRING004, 2, 24)
  974.         End Select
  975.         Select Case (INT020)
  976.             Case 1
  977.                 If (STRING005 == STRING006) BOOLEAN002 = 1
  978.             Case 2
  979.                 If (RTrim(STRING005, " ") == STRING006) BOOLEAN002 = 1
  980.         End Select
  981.         If (BOOLEAN002) Then
  982.             If (INT020 == 1) Then
  983.                 INT021 = 14
  984.                 Goto LABEL046
  985.             Endif
  986.             If (INT020 == 2) Then
  987.                 INT021 = 26
  988.             Endif
  989.             :LABEL046
  990.             If ((Mid(STRING004, INT021, Len(Trim(U_Name(), " "))) == Trim(U_Name(), " ")) && (Right(Mid(STRING004, INT021, Len(Trim(U_Name(), " ")) + 1), 1) == " ")) Then
  991.                 If (BOOLEAN014) Then
  992.                     Newlines 3
  993.                     DispFile PPEPath() + "AL-VER", 1 + 4 + 2
  994.                     Log "** User already Verified - Upgraded Security **", 0
  995.                     FPutLn 7, "**-->> User already verified before"
  996.                     FPutLn 7, "**-->> Verified entry = ", Mid(STRING004, INT021, Len(U_Name()))
  997.                     STRING014 = U_Pwd
  998.                     STRING023 = U_Name()
  999.                     BOOLEAN004 = 1
  1000.                     Wait
  1001.                     FClose 1
  1002.                     BOOLEAN007 = 1
  1003.                     Break
  1004.                     Goto LABEL047
  1005.                 Endif
  1006.                 Break
  1007.             Endif
  1008.             :LABEL047
  1009.             Newlines 3
  1010.             DispFile PPEPath() + "DUPNUM", 1 + 4 + 2
  1011.             Log "** Duplicate Number - Security Not Changed **", 0
  1012.             FPutLn 7, "~~~~~~Duplicate number found in verified.log~~~~~~ : ", Mid(STRING004, 1, 12)
  1013.             FPutLn 7, "     Duplicate entry info: ", STRING004
  1014.             Wait
  1015.             Goto LABEL016
  1016.         Endif
  1017.     EndWhile
  1018.     FClose 1
  1019.     Return
  1020.     :LABEL048
  1021.     Select Case (INT020)
  1022.         Case 1
  1023.             If (BOOLEAN003) Then
  1024.                 If (InStr(STRING020, STRING011)) Then
  1025.                     STRING018 = STRING025 + STRING026 + STRING012 + STRING013
  1026.                 Else
  1027.                     STRING018 = STRING025 + STRING026 + STRING008
  1028.                 Endif
  1029.             Else
  1030.                 If (BOOLEAN019) Then
  1031.                     STRING005 = STRING030 + "1"
  1032.                 Else
  1033.                     STRING005 = STRING029
  1034.                 Endif
  1035.                 STRING018 = STRING025 + STRING026 + STRING005 + STRING008
  1036.             Endif
  1037.         Case 2
  1038.             If (BOOLEAN003) Then
  1039.                 STRING018 = STRING025 + STRING026 + STRING033 + STRING034
  1040.                 Goto LABEL049
  1041.             Endif
  1042.             STRING018 = STRING025 + STRING026 + STRING030 + STRING008
  1043.     End Select
  1044.     :LABEL049
  1045.     If (BOOLEAN003) Then
  1046.         INT011 = INT012
  1047.     Else
  1048.         INT011 = INT013
  1049.     Endif
  1050.     If (STRING027 <> "") Then
  1051.         If (STRING028 == "A") Then
  1052.             STRING018 = STRING018 + STRING027
  1053.             Goto LABEL050
  1054.         Endif
  1055.         If ((STRING028 == "L") && BOOLEAN003) Then
  1056.             STRING018 = STRING018 + STRING027
  1057.             Goto LABEL050
  1058.         Endif
  1059.         If ((STRING028 == "D") && !BOOLEAN003) Then
  1060.             STRING018 = STRING018 + STRING027
  1061.         Endif
  1062.     Endif
  1063.     :LABEL050
  1064.     If (!OnLocal()) FPutLn 7, "  Dialing String to Modem: ", STRING018
  1065.     Return
  1066.     :LABEL051
  1067.     CdChkOff
  1068.     KbdChkOff
  1069.     KbdFlush
  1070.     MdmFlush
  1071.     DtrOff
  1072.     Delay 18
  1073.     DispFile PPEPath() + "CALLB", 1 + 2 + 4
  1074.     Color 15
  1075.     AnsiPos 19, 7
  1076.     If (BOOLEAN003) Then
  1077.         SPrint "TRUE"
  1078.     Else
  1079.         SPrint "FALSE"
  1080.     Endif
  1081.     AnsiPos 41, 7
  1082.     SPrint Space(3 - Len(INT011)), INT011
  1083.     Color 15
  1084.     INT016 = 0
  1085.     Gosub LABEL076
  1086.     While ((REAL001 > 0) && !BOOLEAN001) Do
  1087.         Gosub LABEL052
  1088.         Gosub LABEL078
  1089.         If ((STRING004 == 32) || (STRING004 == Chr(32))) Continue
  1090.         Color 14
  1091.         AnsiPos 26, 11
  1092.         SPrint Mid("AT" + STRING007, 1, 25)
  1093.         AnsiPos 26, 11
  1094.         SendModem "AT" + STRING007 + Chr(13)
  1095.         Delay 18
  1096.         Color 141
  1097.         AnsiPos 26, 12
  1098.         SPrint REAL001, Space(3 - Len(REAL001))
  1099.         FPutLn 7, "         Callback Attempt: Started @ ", String(Time())
  1100.         INTEGER003 = Time()
  1101.         STRING017 = ""
  1102.         Color 3
  1103.         AnsiPos 26, 13
  1104.         SPrint STRING006
  1105.         SendModem STRING018 + Chr(13)
  1106.         AnsiPos 26, 14
  1107.         Color 2
  1108.         SPrint "Waiting..."
  1109.         AnsiPos 26, 14
  1110.         While (1) Do
  1111.             INTEGER004 = Time()
  1112.             If (INTEGER004 > INTEGER003 + INT011) Then
  1113.                 Dec REAL001
  1114.                 Gosub LABEL075
  1115.                 INT016 = 0
  1116.                 Gosub LABEL076
  1117.                 FPutLn 7, "            Modem results: **-->> Callback Timeout...."
  1118.                 Break
  1119.             Else
  1120.                 Gosub LABEL076
  1121.             Endif
  1122.             Gosub LABEL078
  1123.             If ((STRING004 == 32) || (STRING004 == Chr(32))) Break
  1124.             INT010 = MGetByte()
  1125.             Delay 2
  1126.             If (INT010 <> -1) Then
  1127.                 If ((INT010 <> 10) && (INT010 <> 13)) STRING017 = STRING017 + Chr(INT010)
  1128.                 If (InStr(STRING017, "CONNECT")) Then
  1129.                     STRING017 = STRING017 + Chr(MGetByte())
  1130.                     While (1) Do
  1131.                         INT010 = MGetByte()
  1132.                         If (INT010 == -1) Break
  1133.                         STRING017 = STRING017 + Chr(INT010)
  1134.                     EndWhile
  1135.                     Color 15
  1136.                     AnsiPos 26, 14
  1137.                     If (Len(STRING017) > 45) STRING017 = Mid(STRING017, 1, 45)
  1138.                     SPrint STRING017
  1139.                     AnsiPos 26, 14
  1140.                     BOOLEAN001 = 1
  1141.                     Break
  1142.                     Continue
  1143.                 Endif
  1144.                 If (InStr(STRING017, "BUSY")) Then
  1145.                     Color 15
  1146.                     AnsiPos 26, 14
  1147.                     SPrint STRING017 + Space(20 - Len(STRING017))
  1148.                     AnsiPos 26, 14
  1149.                     SendModem "ATH0" + Chr(13)
  1150.                     Delay 18
  1151.                     INT016 = 0
  1152.                     Gosub LABEL076
  1153.                     Gosub LABEL075
  1154.                     FPutLn 7, "            Modem results: Busy...let's try again"
  1155.                     Color 7
  1156.                     REAL001 = REAL001 - REAL002
  1157.                     Break
  1158.                     Continue
  1159.                 Endif
  1160.                 If (InStr(STRING017, "NO DIAL")) Then
  1161.                     Color 15
  1162.                     AnsiPos 26, 14
  1163.                     SPrint STRING017 + Space(20 - Len(STRING017))
  1164.                     AnsiPos 26, 14
  1165.                     Delay 18
  1166.                     INT016 = 0
  1167.                     Gosub LABEL076
  1168.                     Gosub LABEL075
  1169.                     Color 12
  1170.                     FPutLn 7, "            Modem results: No Dialtone...let's try again"
  1171.                     Color 7
  1172.                     REAL001 = REAL001 - REAL003
  1173.                     Break
  1174.                     Continue
  1175.                 Endif
  1176.                 If (InStr(STRING017, "RING")) Then
  1177.                     Color 15
  1178.                     AnsiPos 26, 14
  1179.                     SPrint STRING017 + Space(20 - Len(STRING017))
  1180.                     AnsiPos 26, 14
  1181.                     Color 140
  1182.                     AnsiPos 3, 18
  1183.                     SPrint "***** "
  1184.                     Color 15
  1185.                     SPrint "INCOMING CALL - TERMINATE!!! "
  1186.                     Color 140
  1187.                     SPrint "*****"
  1188.                     Color 10
  1189.                     AnsiPos 3, 18
  1190.                     SPrint "Pick up phone, "
  1191.                     Color 15
  1192.                     SPrint "drop DTR <G>, "
  1193.                     Color 10
  1194.                     SPrint "bye bye incoming..."
  1195.                     AnsiPos 3, 18
  1196.                     SendModem "ATH1" + Chr(13)
  1197.                     Delay 54
  1198.                     INT016 = 0
  1199.                     Gosub LABEL076
  1200.                     Gosub LABEL075
  1201.                     Gosub LABEL052
  1202.                     FPutLn 7, "            Modem results: Incoming Call...let's try again"
  1203.                     REAL001 = REAL001 - REAL004
  1204.                     Break
  1205.                 Endif
  1206.             Endif
  1207.         EndWhile
  1208.         INT016 = 0
  1209.         Gosub LABEL076
  1210.         If (InStr(STRING017, "CONNECT") == 0) Gosub LABEL075
  1211.         Continue
  1212.     EndWhile
  1213.     Return
  1214.     :LABEL052
  1215.     CdChkOff
  1216.     KbdChkOff
  1217.     KbdFlush
  1218.     MdmFlush
  1219.     DtrOff
  1220.     AnsiPos 26, 9
  1221.     Color 12
  1222.     SPrint "Active          "
  1223.     AnsiPos 26, 9
  1224.     Delay 72
  1225.     Color 15
  1226.     SPrint "Done            "
  1227.     AnsiPos 26, 10
  1228.     DtrOn
  1229.     Color 12
  1230.     SPrint "Active          "
  1231.     AnsiPos 26, 10
  1232.     Delay 9
  1233.     Color 15
  1234.     SPrint "Done            "
  1235.     Return
  1236.     :LABEL053
  1237.     STRING014 = ""
  1238.     STRING023 = ""
  1239.     BOOLEAN007 = 0
  1240.     INT014 = 1
  1241.     Cls
  1242.     If (STRING022 == "BOTH") DispFile PPEPath() + "getpwun", 4 + 1 + 2
  1243.     If (STRING022 == "USER") DispFile PPEPath() + "getun", 4 + 1 + 2
  1244.     If (STRING022 == "PASS") DispFile PPEPath() + "getpw", 4 + 1 + 2
  1245.     KbdFlush
  1246.     MdmFlush
  1247.     If ((STRING022 == "BOTH") || (STRING022 == "USER")) Then
  1248.         :LABEL054
  1249.         If (BOOLEAN010) Goto LABEL056
  1250.         If (INT014 > INT008) Goto LABEL060
  1251.         STRING016 = "   Enter Username"
  1252.         InputStr STRING016, STRING023, 14, 25, Mask_Ascii(), 8 + 2 + 256
  1253.         If (STRING023 <> U_Name()) Then
  1254.             Print " @X0CIncorrect Username@X0F!!!...@X0BPlease try again. @X0C[@X0E"
  1255.             PrintLn INT008 - INT014, "@X0C] @X0Btries remaining"
  1256.             FPutLn 7, "       Incorrect Username: " + STRING023
  1257.             Inc INT014
  1258.             STRING023 = ""
  1259.             Delay 18
  1260.             Goto LABEL055
  1261.         Endif
  1262.         BOOLEAN010 = 1
  1263.         If (STRING022 <> "BOTH") Then
  1264.             BOOLEAN007 = 1
  1265.             Goto LABEL056
  1266.         Endif
  1267.         :LABEL055
  1268.         Goto LABEL054
  1269.     Endif
  1270.     :LABEL056
  1271.     If ((STRING022 == "BOTH") || (STRING022 == "PASS")) Then
  1272.         :LABEL057
  1273.         If (BOOLEAN009) Goto LABEL059
  1274.         If (INT014 > INT008) Goto LABEL060
  1275.         STRING016 = "   Enter Password"
  1276.         InputStr STRING016, STRING014, 14, 12, Mask_Ascii(), 8 + 1 + 2 + 256
  1277.         If (STRING014 <> U_Pwd) Then
  1278.             Print " @X0CIncorrect Password@X0F!!!...@X0BPlease try again. @X0C[@X0E"
  1279.             PrintLn INT008 - INT014, "@X0C] @X0Btries remaining"
  1280.             FPutLn 7, "       Incorrect Password: " + STRING014
  1281.             Inc INT014
  1282.             STRING014 = ""
  1283.             Delay 18
  1284.             Goto LABEL058
  1285.         Endif
  1286.         BOOLEAN009 = 1
  1287.         BOOLEAN007 = 1
  1288.         Goto LABEL059
  1289.         :LABEL058
  1290.         Goto LABEL057
  1291.     Endif
  1292.     :LABEL059
  1293.     Return
  1294.     :LABEL060
  1295.     Newline
  1296.     DispFile PPEPath() + "FAL-SEC", 1 + 4 + 2
  1297.     FPutLn 7, "**-->> Excessive Verification Attempts - Disconnecting User"
  1298.     Log "** Excessive Verification Attempts - Security Level Not Changed **", 0
  1299.     U_Sec = INT006
  1300.     FPutLn 7, "    Security Level set to: " + String(INT006)
  1301.     PutUser
  1302.     Delay 54
  1303.     Gosub LABEL019
  1304.     If (OnLocal()) Goto LABEL061
  1305.     Hangup
  1306.     Goto LABEL062
  1307.     :LABEL061
  1308.     PrintLn "Local Testing - User stays online"
  1309.     FPutLn 7, "Local Testing - User stays online"
  1310.     :LABEL062
  1311.     End
  1312.     :LABEL063
  1313.     If (BOOLEAN007) Then
  1314.         If ((U_Sec < INT005) || OnLocal()) Then
  1315.             U_Sec = INT005
  1316.             U_ExpSec = INT004
  1317.             If (INT003 <> 0) Then
  1318.                 U_ExpDate = Date() + INT003
  1319.                 Goto LABEL064
  1320.             Endif
  1321.             U_ExpDate = 0
  1322.             :LABEL064
  1323.             If (STRING031 <> "") Gosub LABEL082
  1324.             PutUser
  1325.             AdjTime INT017
  1326.             If (STRING021 <> "") Message DWORD001, "SYSOP", "CB-FREE Callback PPE", Mixed(U_Name()) + " - Completed Callback", "R", 0, 0, 0, STRING021
  1327.             Cls
  1328.             If (BOOLEAN020 && Exist(PPEPath() + "CID-USR")) DispFile PPEPath() + "CID-USR", 1 + 4 + 2
  1329.             Newline
  1330.             If (Exist(PPEPath() + "PAS-SEC")) DispFile PPEPath() + "PAS-SEC", 1 + 4 + 2
  1331.             If (BOOLEAN004) Goto LABEL066
  1332.             For INT014 = 1 To 10
  1333.                 FAppend 1, PPEPath() + "VERIFIED.LOG", 1, 2
  1334.                 If (Ferr(1)) Then
  1335.                     Color 15
  1336.                     Newline
  1337.                     SPrintLn "Error opening VERIFIED.LOG - Pause 1 Sec and try again"
  1338.                     FPutLn 7, "**-->> Error opening VERIFIED.LOG - Pause 1 Sec - try again"
  1339.                     Color 7
  1340.                     Delay 18
  1341.                     Continue
  1342.                 Endif
  1343.                 If (INT020 == 2) STRING006 = "*" + STRING006 + Space(23 - Len(STRING006))
  1344.                 STRING004 = STRING006 + " " + U_Name() + " " + String(Time()) + " " + String(Date())
  1345.                 If (BOOLEAN019) Then
  1346.                     STRING004 = STRING004 + "International"
  1347.                     Goto LABEL065
  1348.                 Endif
  1349.                 If (BOOLEAN003) Then
  1350.                     STRING004 = STRING004 + " Local"
  1351.                     Goto LABEL065
  1352.                 Endif
  1353.                 STRING004 = STRING004 + " Long Distance"
  1354.                 :LABEL065
  1355.                 If ((STRING024 <> "") && BOOLEAN015) STRING004 = STRING004 + " - CID # Used"
  1356.                 FPutLn 1, STRING004
  1357.                 STRING006 = StripStr(STRING006, "-")
  1358.                 If (STRING006 <> STRING009) Gosub LABEL006
  1359.                 If ((STRING006 <> STRING010) && (STRING010 <> STRING009)) Gosub LABEL007
  1360.                 FClose 1
  1361.                 Break
  1362.             Next
  1363.             :LABEL066
  1364.             If (BOOLEAN004) Goto LABEL068
  1365.             If (STRING022 == "BOTH") Then
  1366.                 FPutLn 7, "Matching Username/Password entered, Raise Security Level to " + String(INT005)
  1367.                 Goto LABEL067
  1368.             Endif
  1369.             If (STRING022 == "PASS") Then
  1370.                 FPutLn 7, "Matching Password entered, Raise Security Level to " + String(INT005)
  1371.                 Goto LABEL067
  1372.             Endif
  1373.             If (STRING022 == "USER") Then
  1374.                 FPutLn 7, "Matching Username entered, Raise Security Level to " + String(INT005)
  1375.             Endif
  1376.             :LABEL067
  1377.             Goto LABEL069
  1378.             :LABEL068
  1379.             FPutLn 7, "Already Verified, Raise Security Level to " + String(INT005)
  1380.             :LABEL069
  1381.             Log "%%% Users Security Upgraded %%%", 0
  1382.             Goto LABEL070
  1383.         Endif
  1384.         Cls
  1385.         Newlines 6
  1386.         PrintLn "@X0ACallback completed@X0F....@X0ESecurity Level too High@X0F...@X0CSecurity not adjusted@X07"
  1387.         FPutLn 7, "**-->> Security Level not changed.  Current Security Level too High"
  1388.     Endif
  1389.     :LABEL070
  1390.     If ((!BOOLEAN003 && !BOOLEAN004) && BOOLEAN021) Then
  1391.         Newline
  1392.         PrintLn "@X0CLong Distance Callback.   .......@X0EDisconnecting now......"
  1393.         PrintLn "@X0FPlease call us right back to enjoy your increased access@X07"
  1394.         FPutLn 7, "Long Distance Call....Hanging up the phone"
  1395.         Log "** Long Distance - Disconnecting now... **", 0
  1396.         Delay 54
  1397.         Goto LABEL016
  1398.     Endif
  1399.     If ((!BOOLEAN003 && !BOOLEAN004) && !BOOLEAN021) Then
  1400.         FPutLn 7, "Long Distance Callback.............User REMAINS online!"
  1401.         FPutLn 7, "Configuration Setting #26 (FALSE) allows this to occur!"
  1402.         Log "** Long Distance Callback - User REMAINS online!! **", 0
  1403.     Endif
  1404.     BOOLEAN003 = 1
  1405.     Return
  1406.     :LABEL071
  1407.     Newline
  1408.     STRING015 = ""
  1409.     If (BOOLEAN015 && (INT020 == 1)) Gosub LABEL073
  1410.     FPutLn 7, "    User's Security Level: ", U_Sec
  1411.     FPutLn 7, " RAW User Rec. Data Phone: ", U_BDPhone
  1412.     FPutLn 7, " RAW User Rec. Home Phone: ", U_HVPhone
  1413.     While (1) Do
  1414.         BOOLEAN006 = 0
  1415.         If (STRING015 <> "R") Then
  1416.             If ((((U_BDPhone <> "") || (U_HVPhone <> "")) || (U_BDPhone <> Space(Len(U_BDPhone)))) || (U_HVPhone <> Space(Len(U_HVPhone)))) Then
  1417.                 If (((STRING024 == "") || !BOOLEAN015) || (INT020 <> 1)) Then
  1418.                     Gosub LABEL026
  1419.                     Goto LABEL072
  1420.                 Endif
  1421.                 Gosub LABEL081
  1422.                 STRING004 = STRING024
  1423.                 Gosub LABEL008
  1424.                 FPutLn 7, "    Caller ID information: ", STRING004
  1425.                 STRING024 = STRING004
  1426.                 STRING011 = Mid(STRING004, 1, 3)
  1427.                 STRING012 = Mid(STRING004, 4, 3)
  1428.                 STRING013 = Mid(STRING004, 7, 4)
  1429.                 STRING006 = STRING011 + "-" + STRING012 + "-" + STRING013
  1430.                 BOOLEAN006 = 1
  1431.                 FPutLn 7, "        Phone number used: Caller ID"
  1432.             Endif
  1433.         Endif
  1434.         :LABEL072
  1435.         Gosub LABEL027
  1436.         If (((Exist(PPEPath() + "CIDNFO") && (STRING024 <> "")) && BOOLEAN015) && BOOLEAN016) DispFile PPEPath() + "CIDNFO", 1 + 2 + 4
  1437.         Newline
  1438.         STRING015 = "C"
  1439.         PrintLn "@X0BPhone number used for Callback: @X1F", STRING006, "@X07"
  1440.         Newline
  1441.         If (((STRING024 <> "") && BOOLEAN015) || BOOLEAN006) Then
  1442.             STRING016 = "@X0EC@X0F)@X02ontinue callback process, @X0EE@X0F)@X02xit Callback@X0F"
  1443.             InputStr STRING016, STRING015, 11, 1, "CE", 8 + 2 + 4 + 256
  1444.         Else
  1445.             STRING016 = "@X0ER@X0F)@X02e-Enter Phone Number or @X0EC@X0F)@X02ontinue callback process, @X0EE@X0F)@X02xit Callback@X0F"
  1446.             InputStr STRING016, STRING015, 11, 1, "CER", 8 + 2 + 4 + 256
  1447.         Endif
  1448.         Select Case (STRING015)
  1449.             Case "E"
  1450.                 FPutLn 7, "**-->> User aborted callback"
  1451.                 BOOLEAN003 = 1
  1452.                 Goto LABEL016
  1453.             Case "R"
  1454.                 FPutLn 7, "####  User choose to RE-ENTER their phone number"
  1455.                 If (BOOLEAN024) STRING015 = ""
  1456.                 Continue
  1457.             Case Else
  1458.                 Break
  1459.         End Select
  1460.         If (STRING015 == "C") Break
  1461.     EndWhile
  1462.     Newline
  1463.     Return
  1464.     :LABEL073
  1465.     STRING024 = Trim(Upper(CallId()), " ")
  1466.     FPutLn 7, "      RAW CID information: ", STRING024
  1467.     If (InStr(STRING024, STRING037) && BOOLEAN026) Then
  1468.         DispFile PPEPath() + "NOBLOCK", 1 + 4 + 2
  1469.         FPutLn 7, "**-->>   Blocked CID Info: User has CID Blocked - Exiting PPE"
  1470.         Delay 36
  1471.         BOOLEAN003 = 1
  1472.         Goto LABEL016
  1473.     Endif
  1474.     STRING004 = STRING024
  1475.     If (STRING035 == "") Then
  1476.         INT014 = 999
  1477.     Else
  1478.         INT014 = InStr(STRING004, STRING035)
  1479.     Endif
  1480.     If (INT014) Then
  1481.         If (INT014 == 999) INT014 = 1
  1482.         INT014 = INT014 + Len(STRING035)
  1483.         STRING004 = Trim(Mid(STRING004, INT014, Len(STRING004) - INT014 - 1), " ")
  1484.         If (InStr(STRING004, " ") <> 0) STRING004 = Mid(STRING004, 1, InStr(STRING004, " ") - 1)
  1485.         REAL005 = ToReal(STRING004)
  1486.         If (REAL005 > 0) Then
  1487.             If (BOOLEAN023) Gosub LABEL074
  1488.         Else
  1489.             STRING004 = "0"
  1490.         Endif
  1491.         If (STRING004 == "0") Then
  1492.             STRING024 = ""
  1493.         Else
  1494.             STRING024 = STRING004
  1495.             If (Len(STRING024) == 7) STRING024 = STRING036 + STRING024
  1496.         Endif
  1497.     Else
  1498.         STRING024 = ""
  1499.     Endif
  1500.     Return
  1501.     :LABEL074
  1502.     INT015 = 3
  1503.     STRING005 = ""
  1504.     INT019 = S2I(Mid(STRING004, INT015, 2), 16)
  1505.     While (INT019 > 0) Do
  1506.         INT015 = INT015 + 2
  1507.         STRING005 = STRING005 + Chr(S2I(Mid(STRING004, INT015, 2), 16))
  1508.         Dec INT019
  1509.     EndWhile
  1510.     STRING004 = STRING005
  1511.     Return
  1512.     :LABEL075
  1513.     AnsiPos 26, 9
  1514.     SPrint Space(45)
  1515.     AnsiPos 26, 10
  1516.     SPrint Space(45)
  1517.     AnsiPos 26, 11
  1518.     SPrint Space(45)
  1519.     AnsiPos 26, 12
  1520.     SPrint Space(45)
  1521.     AnsiPos 26, 13
  1522.     SPrint Space(45)
  1523.     AnsiPos 26, 14
  1524.     SPrint Space(45)
  1525.     AnsiPos 2, 18
  1526.     SPrint Space(60)
  1527.     AnsiPos 2, 19
  1528.     SPrint Space(60)
  1529.     AnsiPos 26, 9
  1530.     Return
  1531.     :LABEL076
  1532.     If ((INTEGER004 - INTEGER003 >= INT016 + 1) || (INT016 == 0)) Then
  1533.         If (INT016 == 0) Then
  1534.             INT016 = 1
  1535.             Goto LABEL077
  1536.         Endif
  1537.         INT016 = INTEGER004 - INTEGER003
  1538.         :LABEL077
  1539.         Color 15
  1540.         AnsiPos 66, 7
  1541.         SPrint Space(3 - Len(INT016)), INT016
  1542.     Endif
  1543.     Return
  1544.     :LABEL078
  1545.     STRING004 = KInkey()
  1546.     Select Case (STRING004)
  1547.         Case 13, Chr(13)
  1548.             KbdChkOn
  1549.             KbdFlush
  1550.             MdmFlush
  1551.             CdChkOn
  1552.             Color 15
  1553.             AnsiPos 3, 18
  1554.             SPrint "**-->>"
  1555.             Color 12
  1556.             SPrint " SysOp hit "
  1557.             Color 15
  1558.             SPrint "ENTER "
  1559.             Color 12
  1560.             SPrint "key to abort callback"
  1561.             AnsiPos 3, 18
  1562.             FPutLn 7, "**-->> SysOp hit ENTER key to abort callback"
  1563.             Delay 36
  1564.             AnsiPos 1, 21
  1565.             Goto LABEL016
  1566.         Case 32, Chr(32)
  1567.             KbdFlush
  1568.             MdmFlush
  1569.             Color 15
  1570.             AnsiPos 3, 18
  1571.             SPrint "**-->>"
  1572.             Color 10
  1573.             SPrint " SysOp hit "
  1574.             Color 15
  1575.             SPrint "SPACE BAR "
  1576.             Color 10
  1577.             SPrint "to recycle callback"
  1578.             AnsiPos 3, 18
  1579.             FPutLn 7, "**-->> SysOp hit SPACE BAR to recycle callback"
  1580.             BOOLEAN008 = 1
  1581.             Color 15
  1582.             INT016 = 0
  1583.             Gosub LABEL076
  1584.             Delay 18
  1585.             Gosub LABEL075
  1586.     End Select
  1587.     Return
  1588.     :LABEL079
  1589.     BOOLEAN002 = 0
  1590.     INT014 = 0
  1591.     FOpen 2, PPEPath() + "BAD-NUM.LST", 0, 0
  1592.     FPutLn 7, "  Checking Number against: BAD-NUM.LST"
  1593.     While (1) Do
  1594.         FGet 2, STRING005
  1595.         If (Ferr(2)) Break
  1596.         If ((Left(STRING005, 1) == "#") || (Left(STRING005, 1) == "'")) Continue
  1597.         If ((INT020 == 1) && (Left(STRING005, 1) == "*")) Continue
  1598.         STRING005 = RTrim(Mid(STRING005, 1, 25), " ")
  1599.         Select Case (INT020)
  1600.             Case 1
  1601.                 INT014 = InStr(STRING005, "?")
  1602.                 Select Case (INT014)
  1603.                     Case 1
  1604.                         If (Mid(STRING005, 4, 7) == STRING012 + STRING013) BOOLEAN002 = 1
  1605.                     Case 4
  1606.                         If ((Mid(STRING005, 1, 3) == STRING011) && (Mid(STRING005, 7, 4) == STRING013)) BOOLEAN002 = 1
  1607.                     Case 7
  1608.                         If (Mid(STRING005, 1, 6) == STRING011 + STRING012) BOOLEAN002 = 1
  1609.                     Case Else
  1610.                         If (STRING005 == STRING008) BOOLEAN002 = 1
  1611.                 End Select
  1612.             Case 2
  1613.                 STRING005 = Mid(STRING005, 2, 24)
  1614.                 INT014 = InStr(STRING005, "?")
  1615.                 If (INT014 == 1) Then
  1616.                     If (RTrim(Mid(STRING005, 4, 12), " ") == STRING033 + STRING034) BOOLEAN002 = 1
  1617.                     Goto LABEL080
  1618.                 Endif
  1619.                 If (INT014 == 4) Then
  1620.                     If ((RTrim(Mid(STRING005, 1, 3), " ") == STRING033) && (Mid(STRING005, 8, 8) == STRING034)) BOOLEAN002 = 1
  1621.                     Goto LABEL080
  1622.                 Endif
  1623.                 If (INT014 == 8) Then
  1624.                     If (RTrim(Mid(STRING005, 1, 7), " ") == STRING032 + STRING033) BOOLEAN002 = 1
  1625.                     Goto LABEL080
  1626.                 Endif
  1627.                 If (STRING005 == STRING008) BOOLEAN002 = 1
  1628.         End Select
  1629.         :LABEL080
  1630.         If (BOOLEAN002) Then
  1631.             DispFile PPEPath() + "BADNUM", 1 + 4 + 2
  1632.             FPutLn 7, "**-->>     Match Found in: BAD-NUM.LST"
  1633.             Newline
  1634.             Wait
  1635.             Goto LABEL016
  1636.         Endif
  1637.     EndWhile
  1638.     FPutLn 7, "        No match found in: BAD-NUM.LST"
  1639.     FClose 2
  1640.     Return
  1641.     :LABEL081
  1642.     STRING010 = U_BDPhone
  1643.     STRING004 = STRING010
  1644.     Gosub LABEL008
  1645.     STRING010 = STRING004
  1646.     STRING009 = U_HVPhone
  1647.     STRING004 = STRING009
  1648.     Gosub LABEL008
  1649.     STRING009 = STRING004
  1650.     Return
  1651.     :LABEL082
  1652.     If (INT020 == 1) Then
  1653.         STRING005 = STRING011 + "-" + STRING012 + "-" + STRING013
  1654.     Else
  1655.         STRING005 = STRING008
  1656.     Endif
  1657.     Select Case (STRING031)
  1658.         Case "COMMENT"
  1659.             If ((U_Cmnt1 == "") || (U_Cmnt1 == Space(Len(U_Cmnt1)))) Then
  1660.                 U_Cmnt1 = String(Date()) + " " + String(Time()) + " " + STRING005
  1661.             ElseIf ((U_Cmnt2 == "") || (U_Cmnt2 == Space(Len(U_Cmnt2)))) Then
  1662.                 U_Cmnt2 = String(Date()) + " " + String(Time()) + " " + STRING005
  1663.             Else
  1664.                 FPutLn 7, "**-->> Both Comment Fields Used - Unable to write info"
  1665.             Endif
  1666.         Case "COMMENT1"
  1667.             U_Cmnt1 = String(Date()) + " " + String(Time()) + " " + STRING005
  1668.         Case "COMMENT2"
  1669.             U_Cmnt2 = String(Date()) + " " + String(Time()) + " " + STRING005
  1670.         Case "NOTES"
  1671.             If (Psa(6)) Then
  1672.                 If ((Len(U_Notes(0)) < 30) || (U_Notes(0) == Space(Len(U_Notes(0))))) Then
  1673.                     U_Notes(0) = Trim(U_Notes(0), " ") + String(Date()) + " " + String(Time()) + " " + STRING005
  1674.                     Goto LABEL083
  1675.                 Endif
  1676.                 If ((Len(U_Notes(1)) < 30) || (U_Notes(1) == Space(Len(U_Notes(1))))) Then
  1677.                     U_Notes(1) = Trim(U_Notes(1), " ") + String(Date()) + " " + String(Time()) + " " + STRING005
  1678.                     Goto LABEL083
  1679.                 Endif
  1680.                 If ((Len(U_Notes(2)) < 30) || (U_Notes(2) == Space(Len(U_Notes(2))))) Then
  1681.                     U_Notes(2) = Trim(U_Notes(2), " ") + String(Date()) + " " + String(Time()) + " " + STRING005
  1682.                     Goto LABEL083
  1683.                 Endif
  1684.                 If ((Len(U_Notes(3)) < 30) || (U_Notes(3) == Space(Len(U_Notes(3))))) Then
  1685.                     U_Notes(3) = Trim(U_Notes(3), " ") + String(Date()) + " " + String(Time()) + " " + STRING005
  1686.                     Goto LABEL083
  1687.                 Endif
  1688.                 If ((Len(U_Notes(4)) < 30) || (U_Notes(4) == Space(Len(U_Notes(4))))) Then
  1689.                     U_Notes(4) = Trim(U_Notes(4), " ") + String(Date()) + " " + String(Time()) + " " + STRING005
  1690.                     Goto LABEL083
  1691.                 Endif
  1692.                 FPutLn 7, "**-->> All NOTES Fields Used - Unable to write info"
  1693.                 :LABEL083
  1694.                 Goto LABEL084
  1695.             Endif
  1696.             FPutLn 7, "**-->> NOTES PSA is not installed - See PCB Manual for Installation"
  1697.     End Select
  1698.     :LABEL084
  1699.     Return
  1700.  
  1701. ;------------------------------------------------------------------------------
  1702. ;
  1703. ; Usage report (before postprocessing)
  1704. ;
  1705. ; ■ Statements used :
  1706. ;
  1707. ;    2       End
  1708. ;    7       Cls
  1709. ;    5       Wait
  1710. ;    37      Color 
  1711. ;    457     Goto 
  1712. ;    341     Let 
  1713. ;    5       Print 
  1714. ;    41      PrintLn 
  1715. ;    322     If 
  1716. ;    20      DispFile 
  1717. ;    11      FOpen 
  1718. ;    3       FAppend 
  1719. ;    12      FClose 
  1720. ;    8       FGet 
  1721. ;    4       FPut 
  1722. ;    123     FPutLn 
  1723. ;    2       Hangup
  1724. ;    1       GetUser
  1725. ;    3       PutUser
  1726. ;    1       DefColor
  1727. ;    1       AdjTime 
  1728. ;    12      Log 
  1729. ;    13      InputStr 
  1730. ;    2       InputYN 
  1731. ;    55      Gosub 
  1732. ;    33      Return
  1733. ;    1       DtrOn
  1734. ;    2       DtrOff
  1735. ;    3       CdChkOn
  1736. ;    2       CdChkOff
  1737. ;    30      Delay 
  1738. ;    4       SendModem 
  1739. ;    4       Inc 
  1740. ;    2       Dec 
  1741. ;    32      Newline
  1742. ;    8       Newlines 
  1743. ;    10      Tokenize 
  1744. ;    3       KbdChkOn
  1745. ;    2       KbdChkOff
  1746. ;    40      AnsiPos 
  1747. ;    1       Message 
  1748. ;    39      SPrint 
  1749. ;    1       SPrintLn 
  1750. ;    5       KbdFlush
  1751. ;    5       MdmFlush
  1752. ;
  1753. ;
  1754. ; ■ Functions used :
  1755. ;
  1756. ;    2       -
  1757. ;    1       %
  1758. ;    324     +
  1759. ;    23      -
  1760. ;    204     ==
  1761. ;    31      <>
  1762. ;    17      <
  1763. ;    1       <=
  1764. ;    16      >
  1765. ;    3       >=
  1766. ;    258     !
  1767. ;    40      &&
  1768. ;    31      ||
  1769. ;    51      Len(
  1770. ;    20      Upper()
  1771. ;    56      Mid()
  1772. ;    11      Left()
  1773. ;    1       Right()
  1774. ;    27      Space()
  1775. ;    10      Ferr()
  1776. ;    16      Chr()
  1777. ;    15      InStr()
  1778. ;    8       RTrim()
  1779. ;    18      Trim()
  1780. ;    15      Date()
  1781. ;    26      Time()
  1782. ;    13      U_Name()
  1783. ;    1       NoChar()
  1784. ;    3       YesChar()
  1785. ;    36      String()
  1786. ;    3       Mask_Num()
  1787. ;    2       Mask_Ascii()
  1788. ;    43      PPEPath()
  1789. ;    5       PcbNode()
  1790. ;    8       OnLocal()
  1791. ;    30      GetToken()
  1792. ;    1       CallId()
  1793. ;    11      Exist()
  1794. ;    2       S2I()
  1795. ;    1       Psa()
  1796. ;    1       KInkey()
  1797. ;    3       MGetByte()
  1798. ;    2       ReplaceStr()
  1799. ;    6       StripStr()
  1800. ;    1       ToDate()
  1801. ;    1       ToInteger()
  1802. ;    5       ToReal()
  1803. ;    12      ToInt()
  1804. ;    1       Mixed()
  1805. ;
  1806. ;------------------------------------------------------------------------------
  1807. ;
  1808. ; Analysis flags : WABMH
  1809. ;
  1810. ; W - Write user ■ 5
  1811. ;     Program writes a user record. Although this may be normal for a
  1812. ;     User Editor, it may also be a way to modify an account level.
  1813. ;     ■ Search for : PUTUSER
  1814. ;
  1815. ; A - Adjust online time remaining ■ 5
  1816. ;     Program modify the amount of online time remaining, this may
  1817. ;     be a way to bypass time limits
  1818. ;     ■ Search for : ADJTIME
  1819. ;
  1820. ; B - Brute hangup ■ 1
  1821. ;     Program hangup without notification. This may be a good way to
  1822. ;     disconnect a user, but if used randomly, may be very nasty
  1823. ;     ■ Search for : HANGUP, DTROFF
  1824. ;
  1825. ; M - Send text to modem only ■ 4
  1826. ;     Some informations are sent only to the modem, not to the local
  1827. ;     screen, this is a well known way to make stealth backdoors, Check!
  1828. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  1829. ;
  1830. ; H - Read Password or Password History ■ 5
  1831. ;     Program is reading the user's password or last password history
  1832. ;     This may be ok for a password manager, but it is very suspect. Check!
  1833. ;     ■ Search for : U_PWDHIST, U_PWD
  1834. ;
  1835. ;------------------------------------------------------------------------------
  1836. ;
  1837. ; Postprocessing report
  1838. ;
  1839. ;    1       For/Next
  1840. ;    14      While/EndWhile
  1841. ;    126     If/Then or If/Then/Else
  1842. ;    25      Select Case
  1843. ;
  1844. ;------------------------------------------------------------------------------
  1845. ;                 AEGiS Corp - Break the routines, code against the machines!
  1846. ;------------------------------------------------------------------------------
  1847.